# -*- coding: utf-8 -*-
# vim: tabstop=4 shiftwidth=4 softtabstop=4
#
# Copyright (C) 2023, GEM Foundation
#
# OpenQuake is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenQuake is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with OpenQuake.  If not, see <http://www.gnu.org/licenses/>.
"""
Module :mod:`openquake.hazardlib.scalerel.cscaling` implements
:class:`CScalingMSR`.
"""
from openquake.hazardlib.scalerel.base import BaseMSR


class CScalingMSR(BaseMSR):
    """
    A parametric mag-area scaling: log10(A) = Mw -C
    with coefficient C ranging from 3.70 to 4.40
    """
    def __init__(self, C):
        self.C = C

    def get_median_area(self, mag, rake):
        return 10. ** (mag - self.C)

    def __str__(self):
        """
        TOML representation of the instance
        """
        return 'CScalingMSR.C = %.2f' % self.C
